<?php
    //include "funcoes.php"; // funcoes comuns aos programas
    cria_variaveis($_POST, $_GET, $_FILES);
    //caso $register_globals esteja desabilitado (depende da versao de PHP, ele cria as variaveis
    //contidas nos forumlarios html (get,post,file).
     
    //define_idioma($idioma);
     
    /* //caso queira habilitar a opcao de idioma em cada programa, individualmente
    echo basename($_SERVER["PHP_SELF"]); //retorna o nome do arquivo php
    echo "<form name=language>";
    echo "<select name=idioma size=1 onChange=retornapagina(this)>";
    echo "  <option value=#>".(G_MSG_01)."</option>";
    echo "  <option value=#>-----------------</option>";
    echo "  <option value=".(basename($_SERVER["PHP_SELF"]))."?idioma=PT_BR>Portugues</option>";
    echo "  <option value=".(basename($_SERVER["PHP_SELF"]))."?idioma=EN_US>English</option>";
    echo "</select>";
    echo "</form>";
    */

	if (!isset($Calcular) && isset($exemplo) && $exemplo == "material")
	{
		header("Location: upload.php?topico=ptoflut");
	}

    echo "<title>".(SISTEMAPF_MSG_01)."</title>";
    echo "<p class=titulo align=center><font face='Arial Black'>".(SISTEMAPF_MSG_02)."</font></p>";
    echo "<p class=subtitulo align=center><font face='Arial Black'>".(SISTEMAPF_MSG_03)."</font></p>";
    echo "<p>";
     
    if (!isset($Calcular))
    {
        if (!isset($exemplo))
            $exemplo = "sim";
        if (!isset($exemplo))
        {
?>
        <p><?php echo G_MSG_05 ?></p>
        <form name="tipoexecucao" method="post" action="index.php?inc=sistemaPF.php">
            <p><input type="radio" name="exemplo" id="exemplos" value="sim">
            <label for="exemplos"><?php echo G_MSG_06 ?></label></p>
            <p><input type="radio" name="exemplo" id="teorico" value="material">
            <label for="teorico"><?php echo Material_Teorico ?></label></p>
            <p><input type="submit" name="prox" value=<?php echo G_MSG_02 ?> class="botao"></p>
        </form>
<?php
        }
        else if (!isset($arquivo))
        {
            //modulo de exemplos - tela inicial
            echo "<br>".(G_MSG_10)."<br>";
            echo "<form method=post enctype=multipart/form-data action=index.php?inc=sistemaPF.php>";
            echo "<input type=hidden name=exemplo value=sim>";
            //echo "<input type=radio name=arquivo value=sim unchecked>".(G_MSG_09)."<br>";
            echo "<input type=radio name=arquivo value=bancodados unchecked>".(G_MSG_15)."<br>";
            echo "<input type=radio name=arquivo value=nao unchecked>".(G_MSG_11)."<br>";
            echo "<br>";
            echo "<input class=button type=submit name=Submit value=".(G_MSG_02).">";
            echo "</form>";
            echo "<form method=post enctype=multipart/form-data action=index.php?inc=sistemaPF.php>";
            echo "<input class=button type=submit name=Submit value=".(G_MSG_03).">";
            echo "</form>";
        }
        else if (($arquivo == "bancodados"))
        {
            //leitura de dados via banco de dados - modulo de exemplos e exercicios
            include "exibe_prob_ptoflut_sistema_xml.php";
        }
        // Final da Etapa I
        // Inicio da Etapa II - recolhe os dados via teclado ou exibe os dados extraidos do(s) arquivo(s) ou do banco de dados
        // A proxima etapa e executada no segundo arquivo do metodo, e e a execucao propriamente dita do problema
        else if (($arquivo == "nao"))
        {
            if ((strlen($base) == 0)or($base < 2)or($base > 10)or(strlen($casas) == 0)or($casas < 1)or(strlen($expmin) == 0)or(strlen($expmax) == 0)or($expmin >= $expmax)or($casas <= 0)or($base <= 0))
            {
                unset($_SESSION['ANAWEB_PROBLEMA']);
                echo SISTEMAPF_MSG_04."<br><br>";
                echo SISTEMAPF_MSG_05."<br><br>";
                echo "<form method=post enctype=multipart/form-data action=index.php?inc=sistemaPF.php>";
                echo "b = <input type=text size=4 maxlenght=6 name=base> &nbsp&nbsp ";
                echo "m = <input type=text size=4 maxlenght=6 name=casas> &nbsp&nbsp ";
                echo "e<sub>1</sub> = <input type=text size=4 maxlenght=6 name=expmin> &nbsp&nbsp ";
                echo "e<sub>2</sub> = <input type=text size=4 maxlenght=6 name=expmax> <br><br>";
                if ((strlen($base) != 0) and (($base < 2) or ($base > 10) ) )
                {
                    echo "<font color=red>  ".SISTEMAPF_MSG_06." </font>";
                    echo "<br><br>";
                }
                if ((strlen($casas) != 0) and ($casas < 1) )
                {
                    echo "<font color=red>  ".SISTEMAPF_MSG_07." </font>";
                    echo "<br><br>";
                }
                if ((strlen($expmin) != 0) and (strlen($expmax) != 0) and ($expmin >= $expmax) )
                {
                    echo "<font color=red>  ".SISTEMAPF_MSG_08." </font>";
                    echo "<br><br>";
                }
                echo "<p>";
                 
                echo "<input class=button type=submit name=Calcular value=".(G_MSG_04).">";
                echo "<br>";
                echo "</form>";
                echo "<form method=post action=index.php?opcao=sistemaPF>";
                 
                echo "<input class=button type=submit name=Submit value=".(G_MSG_03).">";
                echo "</form>";
                echo "</body>";
            } //end if
        } //end else
    }
    else
    {
        if (!isset($_SESSION['ANAWEB_PROBLEMA']))
        {
            $k = potencia($base, $casas-1);
            $j = 0;
            for ($i = 1; $i <= potencia($base, $casas); $i++)
            {
                $string[$i] = "";
            }
            //gera a combinacao dos numeros na base escolhida. exemplo, para base 2 e 2 casas decimais e criado 00, 01, 10,11
            while ($k >= 1 )
            {
                $j = 0;
                $variou = "nao";
                for ($i = 1; $i <= potencia($base, $casas); $i++)
                {
                    if (($i-1)%$k == 0)
                        $variou = "nao";
                    if (($i > $k) and ($variou == "nao") )
                    {
                        $j++;
                        $variou = "sim";
                    } //end if
                    if ($j >= $base)
                    {
                        $j = 0;
                        if (@$aumentou >= potencia($base, $casas)/$k)
                            $variou = "nao";
                    } //end if
                    $string[$i] .= "$j";
                } //end for i
                $k = $k/$base;
            }
            // end while
            $k = potencia($base, $casas-1); //casas-1 pois descarta as combinacoes que comecam com zero
            $tamanho = potencia($base, $casas)-$k; //tamanho do vetor com as combinacoes validas e igual ao numero de possibilidades menos o numero de combinacoes que comecam com zero
            for ($i = 1; $i <= $tamanho; $i++)
            {
                $stringf[$i] = '0.'.$string[$i+$k]; //cria o vetor das combinacoes de numeros possiveis
            } //end for
            $numaux2 = $expmin;
            $cont = 1;
            for ($i = 1; $i <= $tamanho; $i++)
            {
                //imprime na tela os calculos parciais
                $numaux = 1;
                $result[$i] = 0;
                for ($j = 2; $j < strlen($stringf[$i])-1; $j++)
                {
                    // percorre cada algarismo da mantissa
                    $result[$i] = $result[$i] + $stringf[$i][$j] / potencia($base, $numaux);
                    $numaux++;
                } //end for
                $result[$i] = $result[$i] + $stringf[$i][$j] / potencia($base, $numaux);
            } //end for
            $passo = 0;
            $_SESSION['ANAWEB_PROBLEMA'] = array( $stringf, $expmax, $expmin, $result, $base, $tamanho, $passo, $numaux2, $cont, $num, $casas);
        }

        $stringf = $_SESSION['ANAWEB_PROBLEMA'][0];
        $expmax  = $_SESSION['ANAWEB_PROBLEMA'][1];
        $expmin  = $_SESSION['ANAWEB_PROBLEMA'][2];
        $result  = $_SESSION['ANAWEB_PROBLEMA'][3];
        $base    = $_SESSION['ANAWEB_PROBLEMA'][4];
        $tamanho = $_SESSION['ANAWEB_PROBLEMA'][5];
        $passo   = $_SESSION['ANAWEB_PROBLEMA'][6];
        $numaux2 = $_SESSION['ANAWEB_PROBLEMA'][7];
        $cont    = $_SESSION['ANAWEB_PROBLEMA'][8];
        $num     = $_SESSION['ANAWEB_PROBLEMA'][9];
        $casas   = $_SESSION['ANAWEB_PROBLEMA'][10];

        verificaBib($xml_file);
        echo "<br><b><p align=center>".SISTEMAPF_MSG_19."</p></b>";
        echo "<br>";

       //imprime na tela os calculos parciais
        echo "<table bgcolor=\"#000000\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\">
                <thead>
                    <tr>
                        <th colspan=\"2\" bgcolor=\"#ffffff\">Expoente: ".($expmin + $passo)."</td>
                    </tr>
                    <tr>
                        <th colspan=\"2\" bgcolor=\"#ffffff\">Mantissas</td>
                    </tr>
                </thead>
              <tbody>";
        for ($i = 1; $i <= $tamanho; $i++)
        {
            //imprime na tela os calculos parciais
            //echo $stringf[$i]." * ".$base."<sup>".$numaux2."</sup> = (";
            $numaux = 1;
            //$result = 0;
            for ($j = 2; $j < strlen($stringf[$i])-1; $j++)
            {
                // percorre cada algarismo da mantissa
                //echo $stringf[$i][$j]."/".$base."<sup>".($numaux)."</sup> + ";
                //   $result = $result +  $stringf[$i][$j] / potencia($base,$numaux);
                $numaux++;
            } //end for
            //echo $stringf[$i][$j]."/".$base."<sup>".($numaux)."</sup>) * ".$base."<sup>".$numaux2."</sup> = ";
            //$result = $result +  $stringf[$i][$j] / potencia($base,$numaux);
            $num[$cont] = $result[$i] * potencia($base, $numaux2);
            //echo $num[$cont];
            echo "<tr><td bgcolor=\"#ffffff\">$stringf[$i]*$base<sup>".($expmin+$passo)."</sup></td><td bgcolor=\"#ffffff\">".$num[$cont]."</td></tr>\n";
            //$num[$cont] = $result[$i];
            $cont++;
            //echo "<br>";
        } //end for
        echo "\n
              <tr><td colspan=\"2\" bgcolor=\"#ffffff\">Dist&acirc;ncia:".($num[$cont-1] - $num[$cont-2])."</td></tr>
            </tbody></table>\n";
        echo "<br>";
        $numaux2++;
        $passo++;

        $_SESSION['ANAWEB_PROBLEMA'] = array( $stringf, $expmax, $expmin, $result, $base, $tamanho, $passo, $numaux2, $cont, $num, $casas);

        /*}*/ //end for
        if ($expmax-$expmin >= $passo)
        {
            echo "<form action=\"index.php?inc=sistemaPF.php\" method=\"post\">";
            echo "<input type=\"hidden\" name=\"arquivo\" value=\"sim\">";
            if (isset($_POST['navegacao']) && $_POST['navegacao'] == 'sim')
            {
                echo "<input type=\"hidden\" name=\"id_bib\" value=\"$id_bib\">";
                echo "<input type=\"hidden\" name=\"xml_file\" value=\"$xml_file\">";
                echo "<input type=\"hidden\" name=\"indice\" value=\"$indice\">";
                echo "<input type=\"hidden\" name=\"navegacao\" value=\"sim\">";
            }
            echo "<input type=\"submit\" name=\"Calcular\" value=\"Pr&oacute;ximo &gt;\" class=\"button\">";
            echo "</form>";
        }
        if ($expmax-$expmin < $passo)
        {
            echo "<br>";
            echo "<p align=center><b>".SISTEMAPF_MSG_09."</b></p>";
            echo "-n = ".SISTEMAPF_MSG_10." <br>";
            echo "- ".SISTEMAPF_MSG_11.": <br> #F = 2 * b<sup>n-1</sup> * (b - 1) * (e<sub>2</sub> - e<sub>1</sub> + 1) +1 = 2 *
                ".$base."<sup>".($casas-1)."</sup> * (".($base-1).") * (".($expmax-$expmin+1).") + 1 = <font color=blue>".(2 * potencia($base, $casas-1) * ($base-1) * ($expmax-$expmin+1)+1)."</font><br>";
            echo "- ".SISTEMAPF_MSG_12." =  <font color=blue>".$num[1]."</font><br>";
            echo "- ".SISTEMAPF_MSG_13." =  <font color=blue>".$num[$cont-1]."</font><br>";
            echo "- ".SISTEMAPF_MSG_14." = <font color=blue>( ".-$num[1]." , ".$num[1]." )</font><br>";
            echo "- ".SISTEMAPF_MSG_15." = <font color=blue>( -&infin; , ".-$num[$cont-1]." ) U ( ".$num[$cont-1]." , &infin; )</font><br><br>";
            echo "<p align=center><b>".SISTEMAPF_MSG_16."</b></p>";
            echo "<p align=center><table class=especial>";
            echo "<tr class=especial>";
            echo "<td class=especial rowspan=2><p align=center><b>e</b></p></td>";
            echo "<td class=especial colspan=".$tamanho."-1><p align=center><b>".SISTEMAPF_MSG_17."</b></p></td>";
            echo "<td class=especial rowspan=2><p align=center><b>".SISTEMAPF_MSG_18."</b></p></td>";
            echo "</tr>";
            echo "<tr class=especial >";
            for ($i = 1; $i <= $tamanho; $i++)
            {
                echo '<td class=especial ><p align=center>'.$stringf[$i].'</p></td>';
            }
            echo "</tr>";
            $tam = 0;
            for ($j = $expmin; $j <= $expmax; $j++)
            $tam = $tam+$tamanho; //tam guarda o numero de numeros que serao representados na tabela (cada linha representa um expoente e possui  'tamanho (num de possibilidades calculado acima)' valores
            $dados_grafico = "$tam|"; //para salvar num arquivo .txt para ser lido pela rotina do grafico da resposta
            $cont = 1;
            for ($j = $expmin; $j <= $expmax; $j++)
            {
                echo "<tr class=especial >";
                echo '<td class=especial ><p align=center>'.$j.'</p></td>';
                for ($i = 1; $i <= $tamanho; $i++)
                {
                    // exibe os valores calculados da mantissa para cada linha
                    echo '<td class=especial ><p align=center>'.$num[$cont].'</p></td>';
                    $dados_grafico .= "$num[$cont];0|";
                    $cont++;
                }
                echo '<td class=especial ><p align=center>'.($num[$cont-1]-$num[$cont-2]).'</p></td>';
                echo "</tr>";
            }
            $arquivo = gera_nome_arquivo();
            
            //    $arq = fopen ($arquivo,"w+");
            //    $escreve = fwrite($arq,$dados_grafico);
            //    fclose ($arq);
            
            $conn = &ADONewConnection($A_DB_TYPE);
            $conn->PConnect($A_DB_HOST, $A_DB_USER, $A_DB_PASS, $A_DB_DB);
            // $conn->debug=1;
            $sql = "INSERT INTO grafico(id,dados) values ('".$arquivo."','".$dados_grafico."');";
            
            $rs = $conn->Execute($sql);
            
            if ($rs === false) die(A_LANG_LOGIN_MSG5);
                $rs->Close();
            
            echo "</table></p><br><br>";
            echo "<table>";
            echo "<tr><td>Distribui&ccedil;&atilde;o dos n&uacute;meros</td></tr>";
            echo "<tr>";
            echo "<td><img src=sistemaPF_grafico.php?arquivo=".$arquivo." border=0 align=center width=1000 height= 300></td>";
            echo "</table>";
            echo "<form method=post action=index.php?inc=sistemaPF.php>";
            echo "<input type=hidden name=arvore value=".@$arvore.">";
            echo "<br>";
            echo "<input class=button type=submit name=Submit value=Voltar>";
            echo "</form>";
            unset($_SESSION['ANAWEB_PROBLEMA']);
        }
        if (isset($_POST['navegacao']) && $_POST['navegacao'] == 'sim')
        {
            $output = "<form name=\"exemplos\" enctype=\"multipart/form-data\" method=\"post\">";
            $output .= "<script language=\"javascript\" type=\"text/javascript\">\n";
            $output .= "function criarLinks(value) {\n";
            $output .= "document.exemplos.indice.value = value;\n";
            $output .= "document.exemplos.action = 'index.php?inc=exibe_prob_ptoflut_sistema_xml.php'\n";
            $output .= "document.exemplos.submit();\n";
            $output .= "}\n";
            $output .= "</script>";
            $output .= "<input type=\"hidden\" name=\"id_bib\" value=\"".$id_bib."\">";
            $output .= "<input type=\"hidden\" name=\"xml_file\" value=\"".$xml_file."\">";
            $output .= "<input type=\"hidden\" name=\"indice\">";
            $output .= "<br><br>Outros exemplos<br>";
            $objeto = DOMDocument::load($xml_file);
            $filho = $objeto->getelementsbytagname("floatingpoint");
            if ($filho->length)
            {
                $temp = $filho->item(0)->getelementsbytagname("floatp");
                for($i = 0; $i < $temp->length; $i++)
                    $output .= (($i!=0)?' | ':'').(($i==$indice)?'<b>':'')."<a href=\"javascript:criarLinks($i)\"><u>".($i+1)."</u></a>".(($i==$indice)?'</b>':'');
                echo $output;
            }
        }
    } // end else Submit
?>

